package com.jrx.anytxn.reporting.mapper.ext;

import com.jrx.anytxn.reporting.entity.CmInteCoLonInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface ExtCmInteCoLonInfoMapper {

    /**
     * 按照日期删除数据
     *
     * @return
     */
    int deleteByEtlDt(@Param("etlDt") Date etlDt);

    Integer countByEtlDt(@Param("etlDt") Date etlDt);

    CmInteCoLonInfo findByCustomerIdAndEtlDt(@Param("customerId") String customerId,
                                             @Param("etlDt") Date etlDt,
                                             @Param("tenantId") String tenantId);

    CmInteCoLonInfo findByCustomerIdAndEtlDtWithLimitIds(@Param("customerId") String customerId,
                                             @Param("etlDt") Date etlDt,
                                             @Param("tenantId") String tenantId,
                                             @Param("limitIds") List<String> limitIds);

    CmInteCoLonInfo selectByEtlDtAndDuBilNo(@Param("etlDt") Date etlDt,
                                            @Param("duBilNo") String duBilNo,
                                            @Param("tenantId") String tenantId);

    /**
     * 查询用户上一次统计的数据
     * @param customerId
     * @param tenantId
     * @return
     */
    CmInteCoLonInfo findLast(@Param("customerId") String customerId, @Param("tenantId") String tenantId);

    /**
     * 查询用户上一次统计的数据
     * @param customerId
     * @param tenantId
     * @return
     */
    CmInteCoLonInfo findLastWithLimitIds(@Param("customerId") String customerId, @Param("tenantId") String tenantId,
                             @Param("limitIds") List<String> limitIds, @Param("businessDate") Date businessDate);

    /**
     * 查询用户供述数据
     * @param customerId
     * @param tenantId
     * @return
     */
    List<CmInteCoLonInfo> findUserCoLonInfo(@Param("customerId") String customerId, @Param("tenantId") String tenantId);

    /**
     * 更新贷款信息供数已还期数
     * @param info
     */
    void modifyCmInteCoLonInfo(CmInteCoLonInfo info);

    /**
     * 获取指定时间之后的贷款信息数据
     * @param currentYear
     * @param customerId
     * @param tenantId
     * @return
     */
    List<CmInteCoLonInfo> queryLonInfos(@Param("currentYear")String currentYear, @Param("customerId") String customerId, @Param("tenantId") String tenantId);

    /**
     * 根据贷款订单id 查询用户上一次统计的数据
     * @param customerId
     * @param tenantId
     * @return
     */
    CmInteCoLonInfo findByDuBilNoLastWithLimitIds(@Param("customerId") String customerId,@Param("duBilNo") String duBilNo, @Param("tenantId") String tenantId,
                                         @Param("limitIds") List<String> limitIds, @Param("businessDate") Date businessDate);

    /**
     * 根据贷款订单id、客户号、时间  查询客户统计数据
     * @param customerId
     * @param tenantId
     * @return
     */
    CmInteCoLonInfo findByDuBilNoAndEtlDtWithLimitIds(@Param("customerId") String customerId,
                                                         @Param("duBilNo") String duBilNo,
                                                         @Param("etlDt") Date etlDt,
                                                         @Param("tenantId") String tenantId,
                                                         @Param("limitIds") List<String> limitIds);

    /**
     * 按照订单编号 贷款订单id 获取指定时间之后的贷款信息数据
     * @param currentYear
     * @param customerId
     * @param tenantId
     * @return
     */
    List<CmInteCoLonInfo> queryByDuBilNoLonInfos(@Param("currentYear")String currentYear, @Param("customerId") String customerId,@Param("duBilNo") String duBilNo, @Param("tenantId") String tenantId, @Param("productIds") List<String> productIds);

}
